/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.credsoft.copcred.model.vo;

import java.util.LinkedList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.OneToMany;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;

/**
 *
 * @author Sales
 * @since 2009-07-16
 */
@Entity
@Table(name = "banco")
@PrimaryKeyJoinColumn(name = "banco_id")
public class Banco extends EntidadeFinanceira {

    private static final long serialVersionUID = -8828292009190370914L;
    private Integer codigoBacen;
    private List<ContaCliente> contasCliente;
    private List<ContaCorretor> contasCorretor;
    private List<Proposta> propostas;

    public Banco() {
        super();
        this.contasCliente = new LinkedList<ContaCliente>();
        this.contasCorretor = new LinkedList<ContaCorretor>();
        this.propostas = new LinkedList<Proposta>();
    }

    public Banco(Long id) {
        super(id);
    }

    public Banco(Long id, String nome, String cnpj, Integer codigoBacen) {
        super(id, nome, cnpj);
        this.codigoBacen = codigoBacen;
    }

    @Column(name = "codigo_bacen", nullable = false)
    public Integer getCodigoBacen() {
        return codigoBacen;
    }

    public void setCodigoBacen(Integer codigoBacen) {
        this.codigoBacen = codigoBacen;
    }

    @OneToMany(targetEntity = ContaCliente.class, mappedBy = "banco")
    public List<ContaCliente> getContasCliente() {
        return contasCliente;
    }

    public void setContasCliente(List<ContaCliente> contasCliente) {
        this.contasCliente = contasCliente;
    }

    @OneToMany(targetEntity = ContaCorretor.class, mappedBy = "banco")
    public List<ContaCorretor> getContasCorretor() {
        return contasCorretor;
    }

    public void setContasCorretor(List<ContaCorretor> contasCorretor) {
        this.contasCorretor = contasCorretor;
    }

    @OneToMany(targetEntity = Proposta.class, mappedBy = "banco")
    public List<Proposta> getPropostas() {
        return propostas;
    }

    public void setPropostas(List<Proposta> propostas) {
        this.propostas = propostas;
    }

    public void addProposta(Proposta proposta) {
        this.propostas.add(proposta);
    }

    public void removeProposta(Proposta proposta) {
        this.propostas.remove(proposta);
    }

    public void addContaCliente(ContaCliente conta) {
        this.contasCliente.add(conta);
    }

    public void removeContaCliente(ContaCliente conta) {
        this.contasCliente.remove(conta);
    }

    public void addContaCorretor(ContaCorretor conta) {
        this.contasCorretor.add(conta);
    }

    public void removeContaCorretor(ContaCorretor conta) {
        this.contasCorretor.remove(conta);
    }
}
